//Universidad del Valle de Guatemala
//Algoritmos y Estructuras de Datos
//Hoja de Trabajo #5
//David Ytzen Hsieh Lo #08225


/**
 *
 * @author David Hsieh
 */
public class Main {

    /**
     *
     * @param args
     */
    public static void main(String[] args) {

        
        final int CANTIDAD = 1000;
        Heap<Integer> colaPHeap = new Heap(CANTIDAD);
        ColaPJCF<Integer> colaPJCF = new ColaPJCF(CANTIDAD);
        

        int aleatorios[] = new int[CANTIDAD];
        int primero, ultimo=0;


        //Se generan 1000 números de 1 a 9999 y se guarda en un arreglo,
        //ya que los mismos números generados deben estar en los 2 tipos
        //de cola
        for(int i=0; i < 1000; i++) {
            aleatorios[i]=(int) (Math.random() * 9999 + 1);
            //Ya que solo lo que se guardan son números, guardamos los mismos números tanto
            //para el key(código) y el dato que contiene
            colaPHeap.insertar(aleatorios[i], aleatorios[i]);
            colaPJCF.insertar(aleatorios[i], aleatorios[i]);
        }

        System.out.println("Cola con prioridad HEAP: ");
        primero = colaPHeap.remover();
        

        while (!colaPHeap.vacio()) {
            ultimo = colaPHeap.remover();            
        }

        System.out.println("Mayor: " + primero);
        System.out.println("Menor: " + ultimo);
        
        //heap.display();

        System.out.println();
        System.out.println();

        System.out.println("Cola con prioridad PriorityQueue de JCF: ");
        
        primero = colaPJCF.remover();
        

        while(!colaPJCF.vacio())
            ultimo = colaPJCF.remover();
        
        System.out.println("Mayor: " + primero);
        System.out.println("Menor: " + ultimo);
    }

}
